// JavaScript中的 稀疏数组 和 密集数组

// 密集数组：占据连续的内存空间，数组元素之间紧密相连，不存在间隙
// 如：const arr1 = [1,2,3];

// 稀疏数组：数组元素之间存在间隙
const arr2 = [1, 2, 3];
arr2[8] = 8;
console.log(arr2);
// 结果：[1, 2, 3,empty x 5, 8]
// empty x 5 它是未定义的

// 不能进行过滤
const res1 = arr2.filter(i => i === undefined);
console.log(res1);
// 它的返回空，是因为filter源代码的in的原因

// 不能进行map处理
const res2 = arr2.map(i => typeof i);
console.log(res2);
// 它返回的number,而empty x 5没有变化，同样和map的源代码里面的in
// 以上是稀疏数组出现的问题。

// 只能得到稀疏数组
const arr4 = new Array(3);
// 得到密集数组,写法：apply、from
const arr5 = Array.apply(null, Array(3));
console.log(arr5);//输出[undefined,undefined,undefined],代码它的数组是密集型的数组
const arr6 = Array.from({ length: 3 }, () => {});
console.log(arr6);//输出[undefined,undefined,undefined],代码它的数组是密集型的数组

// 1 - 10,得到密集型数组1-10
const dad = Array.from({ length: 10 }).map((x, i) => i + 1);
console.log(dad);//输出[1,2,3,4,5,6,7,8,9,10]
const apply1 = Array.apply(null, Array(10)).map((x, i) => i + 1);
console.log(apply1);//输出[1,2,3,4,5,6,7,8,9,10]
const from1 = Array.from()

